草庐IT

python - 使用许多@properties 扩展 Python namedtuple?

全部标签

ruby - Ruby 中使用循环对象引用的垃圾收集

我在Ruby中遇到垃圾回收问题,我认为应该进行垃圾回收的对象没有被垃圾回收。require'ruby-mass'deffind_dependencies(_object_id,_mapped={})mapped=_mappedpoints_to_object=Mass.references(Mass[_object_id])ids=points_to_object.keys.map{|x|/\#(\d*)/.match(x).captures.first.to_i}mapped[_object_id]=idsunmapped=ids-mapped.keysunmapped.eachdo

c - Ruby C 扩展开发人员的命名约定

在用C为ruby​​编写扩展时,我对遵循正确的命名约定很感兴趣。具体来说,我指的是将_p添加到谓词的函数名称以及为变量添加前缀m代表模块,c代表类等等。例如,如果我们想在C语言中定义一个像下面这样的谓词方法,我们应该在定义该方法的函数中使用_p作为后缀。classMyClassdefawesome?trueendend在C中:staticVALUEmy_extension_my_class_awesome_p(VALUEself){returnQtrue;}voidInit_my_extension(void){VALUEcMyClass=rb_define_class("MyClas

ruby - 在扩展自身的模块中的实例方法中调用单例方法

我自己扩展了Kernel,在实例方法Kernel#abort的定义中,我调用了单例方法Kernel.abort:moduleKernelextendselfdefabortputs"PressENTERtoexit..."getsKernel.abortendendabort当我调用Kernel#abort时,方法定义中的Kernel.abort调用似乎是指原始的Kernel#abort(扩展为Kernel.abort)。Ruby如何知道当我写Kernel.abort时,我指的是原始的abort方法,而不是我刚刚创建的方法?我将如何递归调用我刚刚创建的新abort方法?

ruby - 在 Windows 上为 Jekyll 安装 native Ruby 扩展

我快要发疯了,所以我只想问:你到底是怎么在Windows上安装RubyGemJekyll的。Jekyll依赖于fast-stemmer-1.0.0并且必须构建为native扩展我在RubyDevKit上找到了这个方便的指南在Windows上安装一个“健全”的环境并且它可以工作,但是fast-stemmer仍然一心想使用nmake来构建二进制文件并返回以下错误:C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC>geminstalljekyllTemporarilyenhancingPATHtoincludeDevKit...Buildin

ruby - 使用类似 django 的液体 block /继承的 Jekyll 模板

我正在深入了解Jekyll,并希望将其用作通用前端开发平台,但遇到了Liquid模板语言的局限性,特别是它与Django模板的区别。我发现了liquid-inheritancegem,它添加了Django中最重要的Extends和Block语法。这篇博文进一步扩展了gem以适应Jekyll的文件系统:http://www.sameratiani.com/2011/10/22/get-jekyll-working-with-liquid-inheritance.html问题是它似乎没有以与Django完全相同的方式实现block,这实际上使gem变得无用。为了便于理解,我有两个名为par

ruby - 为什么没有更多的项目使用 Ruby Symbols 而不是 Strings?

当我第一次开始阅读和学习ruby​​时,我读到了一些关于ruby​​符号相对于字符串的强大功能:符号只在内存中存储一​​次,而字符串每个字符串在内存中存储一​​次,即使它们是相同的。比如:Rails的paramsHash在Controller中有一堆key作为符号:params[:id]orparams[:title]...但是Sinatra和Jekyll等其他规模适中的项目不会这样做:杰基尔:post.data["title"]orpost.data["tags"]...西纳特拉:params["id"]orparams["title"]...这使得阅读新代码变得有些棘手,并且难以转

ruby-on-rails - rake cucumber 和 rake spec 始终使用 "develop"环境

我运行Cucumber和RSpec测试的rake任务总是使用我的开发环境。这里是相关的配置文件:RAILS_ROOT/config/environments/cucumber.rb#Editatyourownperil-it'srecommendedtoregeneratethisfile#inthefuturewhenyouupgradetoanewerversionofCucumber.#IMPORTANT:Settingconfig.cache_classestofalseisknownto#breakCucumber'suse_transactional_fixturesmet

ruby - 如何让 xcode 在运行脚本时使用正确版本的 ruby​​?

在xcode中,我有一个运行ruby​​脚本的“运行脚本”构建阶段。但是,似乎xcode正在尝试使用默认的mac1.8版本的ruby​​而不是最新版本来运行它。鉴于脚本需要一个gem,它失败并出现require错误并且错误中的路径指向/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/显然,该路径中的1.8让我产生了怀疑。如果我打开终端并运行命令ruby-v然后它会正确返回2.0.0p0我使用RVM安装并设置为默认值。如何让Xcode在正确的位置查找?还是我误解了这个错误?更新

ruby - "Don' t run bundler as root”- 使用 root 的确切区别是什么?

如果您在以root身份登录时从命令行运行ruby​​bundler,您会收到以下警告:Don'trunBundlerasroot.Bundlercanaskforsudoifitisneeded,andinstallingyourbundleasrootwillbreakthisapplicationforallnon-rootusersonthismachine.以root身份运行bundler对它安装的gem有什么确切的区别?是否与它为每个gem安装的实际文件的权限有关?Ruby会尝试以非root用户身份访问gem文件吗(如果是,Ruby会使用哪个用户/组,我将如何找到)?如果应用

ruby-on-rails - 如何使用 RestClient 修复 Ruby 中的套接字错误?

我正在使用RestClient在ruby​​类中进行网络调用。每当我未连接到Internet时,我都会收到SocketError。我已经添加了一个救援block来捕获异常,但我仍然无法这样做。错误信息是:SocketError(无法打开到api.something.com:443的TCP连接(getaddrinfo:名称或服务未知))moduleMyProjectclassClientdefget_object(url,params={})response=RestClient.get(url,{params:params})rescueSocketError=>eputs"InSoc